package net.xju3_4.service.impl;

import net.xju3_4.common.utils.PageInfo;
import net.xju3_4.dao.CarFavoriteDao;
import net.xju3_4.entity.CarFavorite;
import net.xju3_4.service.CarFavoriteService;

/**
 * 车辆收藏服务实现类
 */
public class CarFavoriteServiceImpl implements CarFavoriteService {
    
    private CarFavoriteDao carFavoriteDao = new CarFavoriteDao();
    
    @Override
    public boolean addFavorite(Integer userId, Integer carId) {
        // 检查参数
        if (userId == null || carId == null) {
            return false;
        }
        
        // 检查是否已经收藏
        if (isFavorited(userId, carId)) {
            return false; // 已经收藏，不能重复收藏
        }
        
        return carFavoriteDao.addFavorite(userId, carId);
    }
    
    @Override
    public boolean removeFavorite(Integer userId, Integer carId) {
        // 检查参数
        if (userId == null || carId == null) {
            return false;
        }
        
        return carFavoriteDao.removeFavorite(userId, carId);
    }
    
    @Override
    public boolean isFavorited(Integer userId, Integer carId) {
        // 检查参数
        if (userId == null || carId == null) {
            return false;
        }
        
        return carFavoriteDao.isFavorited(userId, carId);
    }
    
    @Override
    public PageInfo<CarFavorite> getUserFavorites(Integer userId, int pageNum, int pageSize) {
        // 检查参数
        if (userId == null) {
            return new PageInfo<>(1, 10, 0, new java.util.ArrayList<>());
        }

        // 设置默认分页参数
        if (pageNum <= 0) {
            pageNum = 1;
        }
        if (pageSize <= 0) {
            pageSize = 10;
        }

        return carFavoriteDao.getUserFavorites(userId, pageNum, pageSize);
    }
    
    @Override
    public int getFavoriteCount(Integer carId) {
        if (carId == null) {
            return 0;
        }
        
        return carFavoriteDao.getFavoriteCount(carId);
    }
    
    @Override
    public int getUserFavoriteCount(Integer userId) {
        if (userId == null) {
            return 0;
        }
        
        return carFavoriteDao.getUserFavoriteCount(userId);
    }
}
